MySQL 安装与启停 Docker安装与配置

2. 安装流程

1 确定平台版本和机器位数。

确定当前MYSQL版本对应各种操作系统 平台是否支持。

https://www.mysql.com/support/supportedplatforms/database.html

2 下载对应版本

2.1 下载二进制安装包

 官方网站
http://dev.mysql.com/downloads/mirrors.html.
 进入后可以选择对应的版本

NOTE:
tar.gz tar.xz 为二进制安装。
RPM 为rpm 安装包。
deb 为 deband linux 安装包.
PKG 为mac 文件安装包。

2.2 下载yum 源配置包(社区版)

https://dev.mysql.com/downloads/repo/yum/

2.3 下载源码编译

 源码现目前在GIT 上托管。

3 验证下载后文件是否正确

shell> md5sum mysql-standard-8.0.13-linux-i686.tar.gz
aaab65abbec64d5e907dcd41b8699945  mysql-standard-8.0.13-linux-i686.tar.gz
shell> md5.exe mysql-installer-community-8.0.13.msi
aaab65abbec64d5e907dcd41b8699945  mysql-installer-community-8.0.13.msi
shell> rpm --checksig MySQL-server-8.0.13-0.linux_glibc2.5.i386.rpm
MySQL-server-8.0.13-0.linux_glibc2.5.i386.rpm: md5 gpg OK

3. 使用docer安装部署MYSQL到linux

1 安装docker

1.1 删除旧版本docker

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

1.2 安装依赖包

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

1.3 安装docker repo yum 源

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

1.4 开启yum 源安装

yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test

1.5 安装对应的contanier linux

yum install -y http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.68-1.el7.noarch.rpm

1.6 安装docker

yum install docker-ce

1.7 查看是否安装成功

yum list docker-ce --showduplicates | sort -r

1.8 安装DOCKER 的其他版本

yum install docker-ce-<VERSION STRING>

1.9 启动docker

systemctl start docker

1.10 自启动

 systemctl enable docker

1.11 检测是否正常

docker run hello-world

2 安装MySQL

2.1 下载对应版本

docker pull  store/oracle/mysql-server
docker pull  mysql/mysql-server
docker pull  store/oracle/mysql-enterprise-server:8.0

2.2 查看镜像

docker images

4. 启动和关闭

1 从镜像中启动MySQL

docker run --name=mysql1 -d mysql/mysql-server1
docker start mysql1
docker stop mysql1
docker restart mysql1 

2 查看是否启动MySQL

docker ps

5. 启动后诊断

1 查看日志

docker logs mysql1
docker exec -it mysql1 bash 

2 查看日志

tail host_name.err

3 选择驱动

默认为InnoDB

4 确认数据文件位置是否合适

5 查看所有配置参数和所有的环境变量

mysqld --basedir=/app/mysql --verbose –help | more

6 配置文件环境变量

mysqladmin variables
mysqladmin -h host_name variables
mysql -uroot -p 
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

6. 测试MySQL

docker exec -it mysql1 bash 
mysqladmin version
mysqladmin variables
mysqladmin -u root -p version
mysqladmin -u root shutdown
mysqlshow
mysqlshow mysql
mysql -e "SELECT User, Host, plugin FROM mysql.user" mysql

NOTE:

以上命令成功执行后则mysql 数据正常。

7. 账户安全

mysql -u root -p
docker logs mysql1 2>&1 | grep GENERATED
docker exec -it mysql1 mysql -uroot -p
ALTER USER 'root'@'localhost' IDENTIFIED BY '3345091';

8. 升级

1 停止要升级的容器

docker stop mysql57

2 拉取mysql

docker pull mysql/mysql-server
docker pull store/oracle/mysql-enterprise-server

3 启动新的容器升级

docker run --name=mysql80 \
   --mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \
   --mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \        
   -d mysql/mysql-server:8.0
docker run --name=mysql80 \
   --mount type=bind,src=/path-on-host-machine/my.cnf,dst=/etc/my.cnf \
   --mount type=bind,src=/path-on-host-machine/datadir,dst=/var/lib/mysql \        
   -d store/oracle/mysql-enterprise-server:8.0

4 启动升级

docker exec -it mysql80 mysql_upgrade -uroot -p

5 完成升级后重启

docker restart mysql80

9. 附录

1 忘记root 密码

docker run --name mysql1 -d mysql/mysql-server --character-set-server=utf8mb4 --collation-server=utf8mb4_col
kill `cat /mysql-data-directory/host_name.pid`
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

例如:/root/mysql-init

mysqld --init-file=/home/me/mysql-init &

mysql 服务会自动启动。

--skip-grant-tables:
mysql
FLUSH PRIVILEGES;
update user set password=password("new_pass") where user="root";
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';